package com.jollychic.www.roomdatebasedemo.tool;

import android.support.annotation.NonNull;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

/**
 * desc:  <br/>
 * author: 李超杰 <br/>
 * date: 2018/5/9 下午1:26 <br/>
 * since v <br/>
 */
public class ToolJson {

    /**
     * 把一个Map变成Json字符串
     */
    @NonNull
    public static String transform2JsonString(Map<String, Object> map) {
        if (map == null || map.isEmpty()) {
            return "{}";
        }
        return new JSONObject(map).toJSONString();
    }

    /**
     * 把一个bean变成Json字符串
     */
    @NonNull
    public static String transform2JsonString(Object obj) {
        if (obj == null) {
            return "{}";
        }
        return JSON.toJSONString(obj);
    }

    /**
     * 把一个bean变成Json字符串
     */
    @NonNull
    public static String transform2JsonString(List list) {
        if (list == null) {
            return null;
        }
        return JSON.toJSONString(list);
    }

    /**
     * @param jsonStr json字符串
     * @param cls     转换的class
     * @param <T>     对象
     * @return 集合
     */
    public static <T> T transform2Object(String jsonStr, Class<T> cls) {
        return JSONObject.parseObject(jsonStr, cls);
    }

    /**
     * @param jsonStr json字符串
     * @param type    转换的类型
     * @param <T>     对象
     * @return 集合
     */
    public static <T> T transform2Object(String jsonStr, Type type) {
        return JSONObject.parseObject(jsonStr, type);
    }

    /**
     * @param jsonStr json字符串
     * @param cls     转换的class
     * @param <T>     对象
     * @return 集合
     */
    public static <T> List<T> transform2Array(String jsonStr, Class<T> cls) {
        return JSONObject.parseArray(jsonStr, cls);
    }
}
